/**
 * Promise 封装get异步请求方法
 * 技术栈 function + ajax + Promise
 * @param {String} url  请求后端数据网址
 * @param {Object} params   请求参数 对象类型  {}
 * @param {String|undefined} type    json数据格式
 * @param {Object} headers   请求头 对象类型
 * @returns Promise
 */

 let t=null

function get(url,params,type,headers=null){
return new Promise( (resolve,reject)=>{
        const xhr=new XMLHttpRequest
        xhr.onreadystatechange=()=>{
            if(xhr.readyState===4){
                if(xhr.status===200){
                    let res=xhr.responseText
                    if(type=='json') res=JSON.parse(res) 
                    resolve(res)
                } else {
                    reject(xhr.status)
                }
            }
        }

        let temp=[]
        for(let key in params){
            temp.push(`${key}=${params[key]}`)
        }
        xhr.open('get',`${url}?${temp.join('&')}` )
      

        for(let key in headers){
            xhr.setRequestHeader( key , headers[key] )
        }


        xhr.send(null)
    })
}


/**
 * Promise 封装post异步请求方法
 * @param {String} url  请求后端数据网址
 * @param {Object} params   请求参数 对象类型
 * @param {String|undefined} type    json数据格式
 * @param {Object} headers   请求头 对象类型
 * @returns undefined
 */
let t1=null
function post(url,params,type,headers=null){
    return new Promise((resolve,reject)=>{
        const xhr=new XMLHttpRequest
        xhr.onreadystatechange=()=>{  
            if(xhr.readyState===4){
                if(xhr.status===200){
                    let res=xhr.responseText
                    if(type=='json') res=JSON.parse(res) 
                    resolve(res)
                } else {
                    reject(xhr.status)
                }
            }
        }

        xhr.open('post',url)
      
        xhr.setRequestHeader('content-type','application/x-www-form-urlencoded')
        for(let key in headers){
            xhr.setRequestHeader(key,headers[key])
        }

        let temp=[]
        for(let key in params){
            temp.push(`${key}=${params[key]}`)
        }
        xhr.send(temp.join('&'))
    })
}

// function post(url,params,dataType,headers=null){
//     return new Promise((resolve,reject)=>{
//         const xhr = new XMLHttpRequest
//         xhr.onreadystatechange = function() {
//             if(xhr.readyState === 4){
//                 if(xhr.status === 200){
//                     let res = xhr.responseText
//                     switch (dataType) {
//                         case 'json':
//                             res = JSON.parse(res)
//                             break;
                    
//                         default:
//                             break;
//                 }
//                 resolve(res)}
//                 else{
//                     reject(xhr.status)
//                 }
//             }
//         }
        
//         xhr.open('post', url)

//         xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')

//         for (let key in headers)
//         {
//             xhr.setRequestHeader(key, headers[key])
//         }


//         let paramsArr = []
//         for (let key in params)
//         {
//             paramsArr.push(`${key}=${params[key]}`)
//         }
//         xhr.send(paramsArr.join('&'))
//     })
// }

